package com.xjh.basestudy.designmode.behaviorMode.behaviorMode7_Mediator.p3_update;

/**
 * @Author XuJianHua
 * @Date 2022/10/4 21:53
 * @Description
 * 公共聊天室除了可以广播式发送消息，还增加了发送消息给特定用户的功能；私密聊天室将加入人数限制为两人，沟通只在两人世界中展开。同样，我们来定义一个超级用户类，让他拥有更多的权限，请参看代码清单20-10。
 *

 */
public class PrivateChatRoom extends ChatRoom {

    public PrivateChatRoom(String name) {
        super(name);
    }

    @Override
    public synchronized void register(User user) {
        if (users.size() == 2) {//聊天室最多容纳2人
            System.out.println("系统消息：聊天室已满");
            return;
        }
        super.register(user);
        System.out.print("系统消息：欢迎【");
        System.out.print(user.getName());
        System.out.println("】加入2人聊天室【" + name + "】");
    }

    @Override
    public void sendMsg(User from, User to, String msg) {
        users.forEach(user -> user.listen(from, null, msg));
    }

    @Override
    public void deregister(User user) {
        super.deregister(user);
        System.out.print("系统消息：" + user.getName() + "离开聊天室。");
    }

    @Override
    protected String processMsg(User from, User to, String msg) {
        return from.getName() + "说： " + msg;
    }

}